﻿using Dispatcher.Core.Message;
using Dispatcher.Core.Message.Models;
using Dispatcher.Data.Entities.MySql;
using MiniFox.Components;
using MiniFox.Data.EntityFramework;
using MiniFox.Utility;

namespace Dispatcher.Data
{
    [AutoResolve]
    public class MessageDataProvider : EntityDataProvider<DispatcherContext>, IMessageProvider
    {
        public void Sent(MessageModel messageModel)
        {
            MessageSent messageSent = new()
            {
                MessageId = messageModel.MessageId,
                GroupName = messageModel == null ? string.Empty : messageModel.GroupName,
                SenderId = messageModel.SenderID,
                SenderName = messageModel.SenderName,
                ReceiverId = messageModel.ReceiverID,
                ReceiverName = messageModel.ReceiverName,
                Title = messageModel.Title,
                Data = messageModel.Data.ToJsonString(),
                TemplateName = messageModel == null ? string.Empty : messageModel.TemplateName,
                Body = messageModel.Body,
                SendTime = messageModel.SendTime
            };

            MessageRecv messageRecv = new()
            {
                MessageId = messageModel.MessageId,
                GroupName = messageModel == null ? string.Empty : messageModel.GroupName,
                SenderId = messageModel.SenderID,
                SenderName = messageModel.SenderName,
                OwnerId = messageModel.ReceiverID,
                Title = messageModel.Title,
                Body = messageModel.Body,
                ReceiveTime = DateTime.Now,
                HasRead = false
            };
            this.Insert(messageSent, messageRecv);
        }
    }
}
